home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 352_01 / vecphcnt.cpp < prev    next >
C/C++ Source or Header  |  1991-04-22  |  1KB  |  51 lines

  1. //  VECPHCNT.CPP
  2. //            routines for polar vector phase adjustment.
  3. //            applies to complex vectors.
  4.  
  5. #include <stdlib.h>
  6. #include "wtwg.h"
  7. #include "dblib.h"
  8. #include "vector.h"
  9.  
  10.  
  11. void PhaseCenter ( complex &z , float r)
  12.     {
  13.     float r_end = r+ 2*PI;
  14.     float phase = imag (z);
  15.     
  16.     while ( phase >= r_end ) phase -= 2*PI ;
  17.     while ( phase <  r     )  phase += 2*PI ;
  18.     z = complex ( real(z), phase );    
  19.     return;
  20.     }
  21.  
  22.  
  23.  
  24.  
  25. /* CVector::PhaseCenter ( float NewRange )
  26.  *    routine to adjust the phase part of a polar vector
  27.  *      to the range NewRange to NewRange+2*PI
  28.  *
  29.  *    default NewRange is -PI
  30.  *
  31.  */
  32. void CVector::PhaseCenter ( float  r )
  33.     {
  34.     if ( ! ispolar ) return;
  35.  
  36.     int vn = y.n;
  37.     float *vy = y.v;
  38.     complex pz;
  39.     
  40.     while ( --vn >= 0 )
  41.         {
  42.         pz = complex ( 0, *vy );
  43.         ::PhaseCenter ( pz, r );        // note scope resolution to global
  44.         *(vy++)= imag ( pz );
  45.         }
  46.  
  47.     return;    /* CVector::PhaseCenter () */
  48.     }
  49.  
  50.  
  51. // ----------------- end of VECPHCNT.CPP -------------------------